package Code.Test;

import javax.print.DocFlavor;

/*
给定两个字符串，A和B。
A的旋转操作就是将A最左边的字符移动到最右边。
移动若干次后A能等于B，那么返回True。
 */
public class Test2 {
    public static void main(String[] args) {
        String A = "abcd";
        String B = "cdab";

        System.out.println(compare(A,B));
    }

    //比较
    public static boolean compare(String A, String B) {
        for (int i = 0; i < A.length(); i++) {
            A = RevolveThree(A);
            if (A.equals(B)){
                return true;
            }
        }
        return false;
    }

    //方法一 StringBuilder的添加方法和删除方法
    public static String RevolveOne(String A) {
        StringBuilder sb = new StringBuilder(A);
        sb.append(sb.charAt(0)).deleteCharAt(0);

        return sb.toString();
    }

    //方法二  利用字符串的截取方法
    public static String RevolveTwo(String A) {
        char top = A.charAt(0);
        String end = A.substring(1);
        A = end + top;

        return A;
    }

    //方法三 利用转成数组的方法
    public static String RevolveThree(String A) {
        char[] arr = A.toCharArray();
        char top = arr[0];
        for (int i = 1; i < arr.length; i++) {
            arr[i - 1] = arr[i];
        }
        arr[arr.length-1] = top;

        return new String(arr);
    }
}
